#ifndef FACADE_PATTERN_H
#define FACADE_PATTERN_H

class FaShape
{
public:
    virtual ~FaShape() {}
    virtual void draw() = 0;
};

class FaRectangle : public FaShape
{
public:
    ~FaRectangle() {}

    void draw() override;
};

class FaCircle : public FaShape
{
public:
    ~FaCircle() {}

    void draw() override;
};

class FaSquare : public FaShape
{
public:
    ~FaSquare() {}

    void draw() override;
};

class FaShapeMaker
{
public:
    FaShapeMaker();
    ~FaShapeMaker() {}

    void drawCircle();
    void drawRectangle();
    void drawSquare();

private:
    FaShape* circle;
    FaShape* rectangle;
    FaShape* square;
};

#endif // FACADE_PATTERN_H
